class Singleton {
    //防止出现内存可见性问题,在此处加volatile防止内存可见性问题
    private volatile static Singleton singleton = null;
    private Singleton() {

    }
    public static Singleton getInstance() {
        //第一个if判断此时是否有实例,优化加锁操作
        if (singleton == null)
            synchronized (Singleton.class) {
                //第二个if防止其他线程修改这个实例,进行一个二次检查
                if (singleton == null) {
                    singleton = new Singleton();
                }
            }
        return singleton;
    }
}

public class Demo10 {
}
